package com.byx.chatclient.manager;

import android.content.Context;

import com.byx.chatclient.entity.DaoMaster;
import com.byx.chatclient.entity.DaoSession;

/**
 * DbController
 *
 * @author Superb
 * @date 2021/3/25 10:24
 */
public class DaoManager {
    private DaoMaster.DevOpenHelper mHelper;
    private DaoMaster mDaoMaster;
    private DaoSession mDaoSession;
    private final Context mContext;
    private static DaoManager mDaoManager;

    private static final String TABLE_NAME = "com_byx_chat_client.db";

    private DaoManager(Context context) {
        this.mContext = context;
    }

    public static DaoManager getInstance(Context context) {
        if (mDaoManager == null) {
            synchronized (DaoManager.class){
                if (mDaoManager == null) {
                    mDaoManager = new DaoManager(context);
                }
            }
        }
        return mDaoManager;
    }

    /**
     * 获取DaoSession
     *
     * @return
     */
    public synchronized DaoSession getDaoSession() {
        if (null == mDaoSession) {
            mDaoSession = getDaoMaster().newSession();
        }
        return mDaoSession;
    }

    /**
     * 判断数据库是否存在，如果不存在则创建
     *
     * @return
     */
    private DaoMaster getDaoMaster() {
        if (null == mDaoMaster) {
            mHelper = new DaoMaster.DevOpenHelper(mContext,TABLE_NAME, null);
            mDaoMaster = new DaoMaster(mHelper.getWritableDb());
        }
        return mDaoMaster;
    }

    private void closeDaoSession() {
        if (null != mDaoSession) {
            mDaoSession.clear();
            mDaoSession = null;
        }
    }

    private void closeHelper() {
        if (mHelper != null) {
            mHelper.close();
            mHelper = null;
        }
    }
//
//    /**
//     * 会自动判定是插入还是替换
//     * @param person
//     */
//    public void insertOrReplace(Person person){
//        mPersonDao.insertOrReplace(person);
//    }
//    /**插入一条记录，表里面要没有与之相同的记录
//     *
//     * @param person
//     */
//    public long insert(Person person){
//        return  mPersonDao.insert(person);
//    }
//
//    /**
//     * 更新数据
//     * @param person
//     */
//    public void update(Person person){
//        Person mOldPersonInfor = mPersonDao.queryBuilder().where(PersonDao.Properties.Id.eq(person.getId())).build().unique();//拿到之前的记录
//        if(mOldPersonInfor !=null){
//            mOldPersonInfor.setName("张三");
//            mPersonDao.update(mOldPersonInfor);
//        }
//    }
//    /**
//     * 按条件查询数据
//     */
//    public List<Person> searchByWhere(String wherecluse){
//        List<Person> personInfors = (List<Person>) mPersonDao.queryBuilder().where(PersonDao.Properties.Name.eq(wherecluse)).build().unique();
//        return personInfors;
//    }
//    /**
//     * 查询所有数据
//     */
//    public List<Person> searchAll(){
//        List<Person> personInfors = mPersonDao.queryBuilder().list();
//        return personInfors;
//    }
//    /**
//     * 删除数据
//     */
//    public void delete(String wherecluse){
//        mPersonDao.queryBuilder().where(PersonDao.Properties.Name.eq(wherecluse)).buildDelete().executeDeleteWithoutDetachingEntities();
//    }
}
